From 7c62a443248f9b1b5de5cb79202e33afc3ec94d9 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Thu, 9 Sep 2010 02:13:33 +0200 Subject: [PATCH] gdk: Make GdkWindow cope better with its surface outliving the window Make extra sure we release the surface properly. Also make sure that the released surface doesn't keep any references to us. --- gdk/gdkwindow.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 40252bef5b..524a5d977b 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -523,6 +523,8 @@ gdk_window_finalize (GObject *object) _gdk_window_destroy (window, TRUE); } + gdk_window_drop_cairo_surface (obj); + if (obj->impl) { g_object_unref (obj->impl); @@ -1027,8 +1029,7 @@ recompute_visible_regions_internal (GdkWindowObject *private, private->width, private->height))) { - cairo_surface_destroy (private->cairo_surface); - private->cairo_surface = NULL; + gdk_window_drop_cairo_surface (private); } } @@ -3664,6 +3665,7 @@ gdk_window_drop_cairo_surface (GdkWindowObject *private) cairo_surface_finish (private->cairo_surface); cairo_surface_set_user_data (private->cairo_surface, &gdk_window_cairo_key, NULL, NULL); + private->cairo_surface = NULL; } } -- 2.30.2